#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/select.h>
#include <sys/time.h>
#include <errno.h>

int monitorButton(void)
{
    FILE *stream;// file stream
	char readSign=0x00;
	char writeSign=0x02;
	int buttons_fd;
	char buttons[6] = {'0', '0', '0', '0', '0', '0'};

	buttons_fd = open("/dev/buttons", 0);
	if (buttons_fd < 0) {
		perror("open device buttons");
		exit(1);
	}

	for (;;) {
		char current_buttons[6];
		int count_of_changed_key;
		int i;
		if (read(buttons_fd, current_buttons, sizeof current_buttons) != sizeof current_buttons) {
			perror("read buttons:");
			exit(1);
		}

		i=2;//for (i = 0, count_of_changed_key = 0; i < sizeof buttons / sizeof buttons[0]; i++) {
		count_of_changed_key = 0;
			if (buttons[i] != current_buttons[i]) {
				buttons[i] = current_buttons[i];
				printf("%skey %d is %s", count_of_changed_key ? ", " : "", i+1, buttons[i] == '0' ? "up" : "down");
				if(buttons[i]=='0')
					{
                       printf("\nThe key %d has been triggerred\n",i+1);
					   if((stream=fopen("/home/AB/BS/sign","w+"))==NULL)
					   	{
					     fprintf(stderr,"Cannot open file.\n");
						 return 1;
					   	}  
					   fwrite(&writeSign,sizeof(char),1,stream);					   
					   fseek(stream, 0, SEEK_SET);
					   fread(&readSign,sizeof(char),1,stream);
					   printf("%d\n",readSign);
					   fclose(stream);
				    }
				count_of_changed_key++;
			}
		//}
		if (count_of_changed_key) {
			printf("\n");
		}
		
		
	}

	close(buttons_fd);
	return 0;
}



int main(void)
{
 monitorButton();
 return 0;
}
